<?php

namespace app\common\model\crud;

use tmcore\base\BaseModel;
use tmcore\traits\ModelTrait;

/**
 * 代码生成表
 */
class CrudTable extends BaseModel
{
    use ModelTrait;

    /**
     * 关联数据表字段
     * @return \think\model\relation\HasMany
     */
    public function tableColumn()
    {
        return $this->hasMany(CrudColumn::class, 'table_id', 'id');
    }

    /**
     * 获取菜单配置
     * @param $value
     * @return false|string
     */
    public function getMenuAttr($value)
    {
        if ($value) {
            return json_decode($value, true);
        } else {
            return $value;
        }
    }

    /**
     * 设置菜单配置
     * @param $value
     * @return false|string
     */
    public function setMenuAttr($value)
    {
        if (is_array($value)) {
            return json_encode($value, 320);
        } else {
            return $value;
        }
    }

    /**
     * 获取删除配置
     * @param $value
     * @return false|string
     */
    public function getDeleteAttr($value)
    {
        if ($value) {
            return json_decode($value, true);
        } else {
            return $value;
        }
    }

    /**
     * 设置删除配置
     * @param $value
     * @return false|string
     */
    public function setDeleteAttr($value)
    {
        if (is_array($value)) {
            return json_encode($value, 320);
        } else {
            return $value;
        }
    }

    /**
     * 获取树表配置
     * @param $value
     * @return false|string
     */
    public function getTreeAttr($value)
    {
        if ($value) {
            return json_decode($value, true);
        } else {
            return $value;
        }
    }

    /**
     * 设置树表配置
     * @param $value
     * @return false|string
     */
    public function setTreeAttr($value)
    {
        if (is_array($value)) {
            return json_encode($value, 320);
        } else {
            return $value;
        }
    }

    /**
     * 获取关联配置
     * @param $value
     * @return false|array
     */
    public function getJoinAttr($value)
    {
        if ($value) {
            return json_decode($value, true);
        } else {
            return [];
        }
    }

    /**
     * 设置关联配置
     * @param $value
     * @return false|array
     */
    public function setJoinAttr($value)
    {
        if (is_array($value)) {
            return json_encode($value, JSON_UNESCAPED_UNICODE);
        } else {
            return [];
        }
    }
}